Typical computer peripheral devices may rely on generic device drivers, but are therefore unable to provide device-specific functionality other than those common to all devices in the same class or type. For example, a “generic” mouse driver may support basic left-click and right-click operations, but may not support other features of mice hardware, such as middle-click operations or mouse wheel scrolling and side-scrolling. Peripherals offering functionality beyond such basic operations typically require very device-specific drivers to support such greater functionality. In certain instances, such peripheral devices may require entirely separate software that occupies resources of a connected computing system in order to support such functionality. Furthermore, such software typically requires manual installation by a user of the computing system, and is not portable to other computing systems without significant effort by the user.
In addition, while it may be desirable in many instances to assign actions to user-selectable controls of computer input devices other than those actions assigned by the device manufacturer, such advanced configuration typically also requires separate software. Moreover, the configuration information needed to modify the user-selectable controls using such software is often tied to the particular operating system of the computing system that is connected to the device at the time of configuration, and such configuration information is also not typically portable, readable by human users, or easily modified by those users. In some cases, “internal” or “on-board” customization designs for computer input devices may allow users to configure their devices without separate software, but the ability to view and edit the configuration is lost.